From b64103efca366ad017f44be8ab4e5e27e45b2bd3 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Wed, 30 Dec 2020 19:59:02 -0300 Subject: [PATCH] workspacesView/workspacesDisplay: Don't sync geometry when animating Synchronizing the actual geometry while animating from / to the overview can break the animation. Let's prevent that. This code will go away soon anyway, but to not lose bisectability, it's better not to leave it misbehaving until then. Part-of: --- js/ui/workspacesView.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index 36a15a71f..ac0729dd0 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -515,6 +515,7 @@ class WorkspacesDisplay extends St.Widget { this._gestureActive = false; // touch(pad) gestures this._canScroll = true; // limiting scrolling speed + this._animating = false; this.connect('destroy', this._onDestroy.bind(this)); } @@ -690,6 +691,8 @@ class WorkspacesDisplay extends St.Widget { } animateFromOverview() { + this._animating = true; + for (let i = 0; i < this._workspacesViews.length; i++) this._workspacesViews[i].animateFromOverview(); @@ -703,10 +706,13 @@ class WorkspacesDisplay extends St.Widget { x, y, width, height, duration: ANIMATION_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, + onStopped: () => (this._animating = false), }); } vfunc_hide() { + this._animating = false; + if (this._restackedNotifyId > 0) { Main.overview.disconnect(this._restackedNotifyId); this._restackedNotifyId = 0; @@ -739,6 +745,8 @@ class WorkspacesDisplay extends St.Widget { } _updateWorkspacesViews() { + this._animating = false; + for (let i = 0; i < this._workspacesViews.length; i++) this._workspacesViews[i].destroy(); @@ -815,6 +823,9 @@ class WorkspacesDisplay extends St.Widget { this._syncActualGeometryLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { + if (this._animating) + return GLib.SOURCE_CONTINUE; + this._syncWorkspacesActualGeometry(); this._syncActualGeometryLater = 0; -- 2.39.5